package com.qf.oop.user;

import java.util.Arrays;

/**
 * 用户管理类
 * 提供用户的注册和登录功能
 */
public class UserManager {

    /**
     * 该实例属性用来保存用户对象
     */
    User[] users = new User[5];

    /**
     * 代表已经成功注册的用户的数量
     */
    int count;

    public UserManager() {
        // 初始化 users数组
//        users = new User[5];
    }

    /**
     * 打印 userManager对象自身的信息
     */
    public void printInfo(){
        System.out.println("count="+count);
        for (int i = 0; i < count; i++) {
            System.out.println(users[i].getUsername());
        }
    }



    /**
     * 用户注册
     * @param username
     * @param password
     * @return true代表成功，false代表失败
     */
    public boolean regist(String username,String password){

        //1. 检查用户名是否重复
        boolean exist = checkUserName(username);
        if (exist){
            System.out.println("用户名重复了，注册失败，用户名="+username);
            return false;
        }
        //2. 如果用户名不重复，进行注册
        //3. 注册：把username和password创建成一个user对象，然后把user对象保存起来
        User user = new User(username, password);
        //4. 判断当前的user数组长度是否够用，如果不够怎么办？
        if (count== users.length){
            // 对原来的数组进行扩容操作
//            User[] users1 = Arrays.copyOf(users, users.length * 2);
//            users = users1;  // 把UserManger对象的 users属性指向新创建的数组即可
            users = Arrays.copyOf(users, users.length * 2);
        }
        users[count] = user;
        count++;
        return true;
    }

    /**
     * 检查用户名在 userManager对象的 users数组中是否存在
     * @param username
     * @return true代表存在，false代表不存在
     */
    public boolean checkUserName(String username) {

        if (count==0){ // 如果一个用户都没有注册，直接返回false即可
            return false;
        }

        for (int i = 0; i < count; i++) {
            if (username.equals(users[i].getUsername())){
                return true;  // 重名了
            }
        }

        return false;
    }

    /**
     * 用户登录
     * @param username
     * @param password
     * @return true代表成功，false代表失败
     */
    public boolean login(String username,String password){

        //1. 查询users数组中是否包含 用户名和密码都一致的user对象
        for (int i = 0; i < count; i++) {
            if (users[i].getUsername().equals(username) && users[i].getPassword().equals(password) ) {
                return true;
            }
        }
        System.out.println("用户名或密码错误,username="+username);
        return false;
    }

}
